package cn.tedu.elasticsearch.repository;

import cn.tedu.elasticsearch.pojo.Item;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ItemRepository extends
        ElasticsearchRepository<Item,Long> {
    //继承ElasticsearchRepository接口，就可以使用SpringDataES封装好的增删改查的方法
    //ElasticsearchRepository<[实体类类型],[实体类主键类型]>

    //自定义查询方法，遵循框架给定的格式，编写的方法名称，就可以自动生成查询语句
    //SELECt * FROM item WHERE title LIKE "%鼠标%"
    /*
      query(查询):表示当前方法是查询方法，类似SQL中的select
      Items/Item:表示要查询的实体类，以及返回类型，带s就是返回多个对象
      By(通过): 表示开始设置条件，类似SQL中的where
      Title: 要查询的字段
      Matches:表示执行查询分词的字符串，类似SQL中的like
     */
    Iterable<Item> queryItemsByTitleMatches(String title);
    //多条件查询--or
    Iterable<Item> queryItemsByTitleMatchesOrBrandMatches(String title,String brand);
    //指定price进行降序查询，desc降序，asc是升序
    Iterable<Item> queryItemsByTitleMatchesOrBrandMatchesOrderByPriceDesc(String title,String brand);
    //分页查询
    Page<Item> queryItemsByTitleMatchesOrBrandMatchesOrderByPriceDesc(String title, String brand, Pageable pageable);
}
